[INFO] cloning repository https://github.com/potatob6/RustGeneticsCaculator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/potatob6/RustGeneticsCaculator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpotatob6%2FRustGeneticsCaculator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpotatob6%2FRustGeneticsCaculator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1b5aa8c4e1826931f9120cd67c4826507154eb9f
[INFO] fixing potatob6/RustGeneticsCaculator against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpotatob6%2FRustGeneticsCaculator" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/potatob6/RustGeneticsCaculator
[INFO] finished tweaking git repo https://github.com/potatob6/RustGeneticsCaculator
[INFO] tweaked toml for git repo https://github.com/potatob6/RustGeneticsCaculator written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/potatob6/RustGeneticsCaculator on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/potatob6/RustGeneticsCaculator already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b
[INFO] running `Command { std: "docker" "start" "0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling libm v0.2.11
[INFO] [stderr]    Compiling bigdecimal v0.4.6
[INFO] [stderr]     Checking nohash v0.2.0
[INFO] [stderr]     Checking poke v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/main.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/main.rs (1 fix)
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:626:17
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]        Fixed src/colorfulstring.rs (32 fixes)
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:656:24
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:735:17
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:763:24
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:626:17
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:656:24
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.07s
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:735:17
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:763:24
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] crater-edition-check: poke v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking poke v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `HashSet`, `default`, `fs::exists`, `hash_map::Keys`, `id`, `rc::Rc`, and `sync::LazyLock`
[INFO] [stdout]  --> src/main.rs:1:56
[INFO] [stdout]   |
[INFO] [stdout] 1 | ...::{hash_map::Keys, HashMap, HashSet}, default, fmt::Display, fs::exists, hash::{BuildHasherDefault, Hash}, hint::assert_unchecked, io::{self, stdin, stdout, Write}, mem::transmute, process::{exit, id}, rc::Rc, sync::LazyLock, t...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^           ^^^^^^^   ^^^^^^^                ^^^^^^^^^^                                                                                                                              ^^   ^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:177:11
[INFO] [stdout]     |
[INFO] [stdout] 177 |         = ((self.0[0] as u64) << 40 | 
[INFO] [stdout]     |           ^
[INFO] [stdout] ...
[INFO] [stdout] 182 |           (self.0[5] as u64));
[INFO] [stdout]     |                             ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 177 ~         = (self.0[0] as u64) << 40 | 
[INFO] [stdout] 178 |           (self.0[1] as u64) << 32 | 
[INFO] [stdout] ...
[INFO] [stdout] 181 |           (self.0[4] as u64) << 8 |
[INFO] [stdout] 182 ~           (self.0[5] as u64) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]     --> src/main.rs:1004:5
[INFO] [stdout]      |
[INFO] [stdout]  913 | /     match partial {
[INFO] [stdout]  914 | |         None => {
[INFO] [stdout]  915 | |             return (None, None);
[INFO] [stdout] ...    |
[INFO] [stdout] 1003 | |     }
[INFO] [stdout]      | |_____- any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout] 1004 |       generation += 1;
[INFO] [stdout]      |       ^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashSet`, `default`, `fs::exists`, `hash_map::Keys`, `id`, `rc::Rc`, and `sync::LazyLock`
[INFO] [stdout]  --> src/main.rs:1:56
[INFO] [stdout]   |
[INFO] [stdout] 1 | ...::{hash_map::Keys, HashMap, HashSet}, default, fmt::Display, fs::exists, hash::{BuildHasherDefault, Hash}, hint::assert_unchecked, io::{self, stdin, stdout, Write}, mem::transmute, process::{exit, id}, rc::Rc, sync::LazyLock, t...
[INFO] [stdout]   |       ^^^^^^^^^^^^^^           ^^^^^^^   ^^^^^^^                ^^^^^^^^^^                                                                                                                              ^^   ^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:177:11
[INFO] [stdout]     |
[INFO] [stdout] 177 |         = ((self.0[0] as u64) << 40 | 
[INFO] [stdout]     |           ^
[INFO] [stdout] ...
[INFO] [stdout] 182 |           (self.0[5] as u64));
[INFO] [stdout]     |                             ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 177 ~         = (self.0[0] as u64) << 40 | 
[INFO] [stdout] 178 |           (self.0[1] as u64) << 32 | 
[INFO] [stdout] ...
[INFO] [stdout] 181 |           (self.0[4] as u64) << 8 |
[INFO] [stdout] 182 ~           (self.0[5] as u64) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::Borrow`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{borrow::Borrow, cell::RefCell, collections::{hash_map::Keys, HashMap, HashSet}, default, fmt::Display, fs::exists, hash::{B...
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_seq` is never read
[INFO] [stdout]    --> src/main.rs:328:28
[INFO] [stdout]     |
[INFO] [stdout] 328 |         let mut prev_seq = Vec::new();
[INFO] [stdout]     |                            ^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 335 |                 prev_seq = prev_seq_1;
[INFO] [stdout]     |                 -------- `prev_seq` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `lowest_idx` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:623:9
[INFO] [stdout]     |
[INFO] [stdout] 623 |     let mut lowest_idx = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_lowest_idx` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:711:25
[INFO] [stdout]     |
[INFO] [stdout] 711 |                         lowest_idx = idx;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 718 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ---------------- `lowest_idx` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:718:21
[INFO] [stdout]     |
[INFO] [stdout] 718 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:643:25
[INFO] [stdout]     |
[INFO] [stdout] 643 |                         lowest_idx = idx;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 650 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ---------------- `lowest_idx` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:650:21
[INFO] [stdout]     |
[INFO] [stdout] 650 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:901:9
[INFO] [stdout]     |
[INFO] [stdout] 901 |     let mut generation = 1usize;
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:902:9
[INFO] [stdout]     |
[INFO] [stdout] 902 |     let mut partial_lowest: Option<ComposeResult> = None;
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:904:18
[INFO] [stdout]     |
[INFO] [stdout] 904 |     let (global, mut partial) = first_time_step(exist_gene, composed_collection, selected_collection, probability);
[INFO] [stdout]     |                  ----^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:917:14
[INFO] [stdout]     |
[INFO] [stdout] 917 |         Some(mut prev_selected_result) => {
[INFO] [stdout]     |              ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:919:17
[INFO] [stdout]     |
[INFO] [stdout] 919 |             let mut prev_lowest_loss = composed_collection.iter().min_by_key(|x| *x.0.loss.borrow() );
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:927:39
[INFO] [stdout]     |
[INFO] [stdout] 927 | ...   let (global, partial, mut delta_compose) = delta_step(exist_gene, composed_collection, selected_collection, probability, &pre...
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/main.rs:901:9
[INFO] [stdout]     |
[INFO] [stdout] 901 |     let mut generation = 1usize;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `partial_lowest`
[INFO] [stdout]    --> src/main.rs:902:9
[INFO] [stdout]     |
[INFO] [stdout] 902 |     let mut partial_lowest: Option<ComposeResult> = None;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_partial_lowest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1293:9
[INFO] [stdout]      |
[INFO] [stdout] 1293 |     let mut idx = 0;
[INFO] [stdout]      |         ----^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]     --> src/main.rs:1293:9
[INFO] [stdout]      |
[INFO] [stdout] 1293 |     let mut idx = 0;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `probability`
[INFO] [stdout]     --> src/main.rs:1363:23
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn change_probability(probability: BigDecimal) -> Option<BigDecimal> {
[INFO] [stdout]      |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_probability`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1393:13
[INFO] [stdout]      |
[INFO] [stdout] 1393 |         let mut global_lowest_loss: Option<ComposeResult> = None;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `global_lowest_loss`
[INFO] [stdout]     --> src/main.rs:1393:13
[INFO] [stdout]      |
[INFO] [stdout] 1393 |         let mut global_lowest_loss: Option<ComposeResult> = None;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_global_lowest_loss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_str` and `display` are never used
[INFO] [stdout]    --> src/main.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl GeneGroup {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn from_str(s: &str) -> Option<Self> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn display(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:538:53
[INFO] [stdout]     |
[INFO] [stdout] 538 |         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout]     = note: `#[warn(integer_to_ptr_transmutes)]` on by default
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 538 -         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout] 538 +         let exists_vec: &Vec<&GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<Vec<&GeneGroup>>(exists_vec_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:539:59
[INFO] [stdout]     |
[INFO] [stdout] 539 |         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 539 -         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout] 539 +         let exists_gene: &NoHashSet<GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<GeneGroup, (), BuildHasherDefault<NoHashHasher<GeneGroup>>>>(exists_gene_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:540:78
[INFO] [stdout]     |
[INFO] [stdout] 540 |         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout]     |                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 540 -         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout] 540 +         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(already_compose_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:541:71
[INFO] [stdout]     |
[INFO] [stdout] 541 |         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout]     |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 541 -         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout] 541 +         let selected_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(selected_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:542:49
[INFO] [stdout]     |
[INFO] [stdout] 542 |         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 542 -         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout] 542 +         let probability: &BigDecimal = unsafe { &*std::ptr::with_exposed_provenance::<BigDecimal>(probability_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:548:53
[INFO] [stdout]     |
[INFO] [stdout] 548 |         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 548 -         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout] 548 +         let exists_vec: &Vec<&GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<Vec<&GeneGroup>>(exists_vec_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:549:59
[INFO] [stdout]     |
[INFO] [stdout] 549 |         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 549 -         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout] 549 +         let exists_gene: &NoHashSet<GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<GeneGroup, (), BuildHasherDefault<NoHashHasher<GeneGroup>>>>(exists_gene_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:550:78
[INFO] [stdout]     |
[INFO] [stdout] 550 |         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout]     |                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 550 -         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout] 550 +         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(already_compose_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:551:71
[INFO] [stdout]     |
[INFO] [stdout] 551 |         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout]     |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 551 -         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout] 551 +         let selected_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(selected_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:552:49
[INFO] [stdout]     |
[INFO] [stdout] 552 |         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 552 -         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout] 552 +         let probability: &BigDecimal = unsafe { &*std::ptr::with_exposed_provenance::<BigDecimal>(probability_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:591:52
[INFO] [stdout]     |
[INFO] [stdout] 591 |         let a2: &mut Vec<ComposeResult> = unsafe { transmute(a2_ptr) };
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 591 -         let a2: &mut Vec<ComposeResult> = unsafe { transmute(a2_ptr) };
[INFO] [stdout] 591 +         let a2: &mut Vec<ComposeResult> = unsafe { &mut *std::ptr::with_exposed_provenance_mut::<Vec<ComposeResult>>(a2_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:597:52
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let a3: &mut Vec<ComposeResult> = unsafe { transmute(a3_ptr) };
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 597 -         let a3: &mut Vec<ComposeResult> = unsafe { transmute(a3_ptr) };
[INFO] [stdout] 597 +         let a3: &mut Vec<ComposeResult> = unsafe { &mut *std::ptr::with_exposed_provenance_mut::<Vec<ComposeResult>>(a3_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:626:17
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:656:24
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:735:17
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:763:24
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/main.rs:1365:5
[INFO] [stdout]      |
[INFO] [stdout] 1365 |     stdout().flush();
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1365 |     let _ = stdout().flush();
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/main.rs:1415:9
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         stdout().flush();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         let _ = stdout().flush();
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `poke` (bin "poke") due to 4 previous errors; 38 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]     --> src/main.rs:1004:5
[INFO] [stdout]      |
[INFO] [stdout]  913 | /     match partial {
[INFO] [stdout]  914 | |         None => {
[INFO] [stdout]  915 | |             return (None, None);
[INFO] [stdout] ...    |
[INFO] [stdout] 1003 | |     }
[INFO] [stdout]      | |_____- any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout] 1004 |       generation += 1;
[INFO] [stdout]      |       ^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::Borrow`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{borrow::Borrow, cell::RefCell, collections::{hash_map::Keys, HashMap, HashSet}, default, fmt::Display, fs::exists, hash::{B...
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prev_seq` is never read
[INFO] [stdout]    --> src/main.rs:328:28
[INFO] [stdout]     |
[INFO] [stdout] 328 |         let mut prev_seq = Vec::new();
[INFO] [stdout]     |                            ^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 335 |                 prev_seq = prev_seq_1;
[INFO] [stdout]     |                 -------- `prev_seq` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `lowest_idx` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:623:9
[INFO] [stdout]     |
[INFO] [stdout] 623 |     let mut lowest_idx = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_lowest_idx` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:711:25
[INFO] [stdout]     |
[INFO] [stdout] 711 |                         lowest_idx = idx;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 718 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ---------------- `lowest_idx` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:718:21
[INFO] [stdout]     |
[INFO] [stdout] 718 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:643:25
[INFO] [stdout]     |
[INFO] [stdout] 643 |                         lowest_idx = idx;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 650 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ---------------- `lowest_idx` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `lowest_idx` is never read
[INFO] [stdout]    --> src/main.rs:650:21
[INFO] [stdout]     |
[INFO] [stdout] 650 |                     lowest_idx = idx;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:901:9
[INFO] [stdout]     |
[INFO] [stdout] 901 |     let mut generation = 1usize;
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:902:9
[INFO] [stdout]     |
[INFO] [stdout] 902 |     let mut partial_lowest: Option<ComposeResult> = None;
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:904:18
[INFO] [stdout]     |
[INFO] [stdout] 904 |     let (global, mut partial) = first_time_step(exist_gene, composed_collection, selected_collection, probability);
[INFO] [stdout]     |                  ----^^^^^^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:917:14
[INFO] [stdout]     |
[INFO] [stdout] 917 |         Some(mut prev_selected_result) => {
[INFO] [stdout]     |              ----^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:919:17
[INFO] [stdout]     |
[INFO] [stdout] 919 |             let mut prev_lowest_loss = composed_collection.iter().min_by_key(|x| *x.0.loss.borrow() );
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:927:39
[INFO] [stdout]     |
[INFO] [stdout] 927 | ...   let (global, partial, mut delta_compose) = delta_step(exist_gene, composed_collection, selected_collection, probability, &pre...
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/main.rs:901:9
[INFO] [stdout]     |
[INFO] [stdout] 901 |     let mut generation = 1usize;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `partial_lowest`
[INFO] [stdout]    --> src/main.rs:902:9
[INFO] [stdout]     |
[INFO] [stdout] 902 |     let mut partial_lowest: Option<ComposeResult> = None;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_partial_lowest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1293:9
[INFO] [stdout]      |
[INFO] [stdout] 1293 |     let mut idx = 0;
[INFO] [stdout]      |         ----^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]     --> src/main.rs:1293:9
[INFO] [stdout]      |
[INFO] [stdout] 1293 |     let mut idx = 0;
[INFO] [stdout]      |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `probability`
[INFO] [stdout]     --> src/main.rs:1363:23
[INFO] [stdout]      |
[INFO] [stdout] 1363 | fn change_probability(probability: BigDecimal) -> Option<BigDecimal> {
[INFO] [stdout]      |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_probability`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1393:13
[INFO] [stdout]      |
[INFO] [stdout] 1393 |         let mut global_lowest_loss: Option<ComposeResult> = None;
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `global_lowest_loss`
[INFO] [stdout]     --> src/main.rs:1393:13
[INFO] [stdout]      |
[INFO] [stdout] 1393 |         let mut global_lowest_loss: Option<ComposeResult> = None;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_global_lowest_loss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_str` and `display` are never used
[INFO] [stdout]    --> src/main.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl GeneGroup {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn from_str(s: &str) -> Option<Self> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn display(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:538:53
[INFO] [stdout]     |
[INFO] [stdout] 538 |         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout]     = note: `#[warn(integer_to_ptr_transmutes)]` on by default
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 538 -         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout] 538 +         let exists_vec: &Vec<&GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<Vec<&GeneGroup>>(exists_vec_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:539:59
[INFO] [stdout]     |
[INFO] [stdout] 539 |         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 539 -         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout] 539 +         let exists_gene: &NoHashSet<GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<GeneGroup, (), BuildHasherDefault<NoHashHasher<GeneGroup>>>>(exists_gene_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:540:78
[INFO] [stdout]     |
[INFO] [stdout] 540 |         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout]     |                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 540 -         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout] 540 +         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(already_compose_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:541:71
[INFO] [stdout]     |
[INFO] [stdout] 541 |         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout]     |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 541 -         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout] 541 +         let selected_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(selected_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:542:49
[INFO] [stdout]     |
[INFO] [stdout] 542 |         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 542 -         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout] 542 +         let probability: &BigDecimal = unsafe { &*std::ptr::with_exposed_provenance::<BigDecimal>(probability_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:548:53
[INFO] [stdout]     |
[INFO] [stdout] 548 |         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 548 -         let exists_vec: &Vec<&GeneGroup> = unsafe { transmute(exists_vec_ptr) };
[INFO] [stdout] 548 +         let exists_vec: &Vec<&GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<Vec<&GeneGroup>>(exists_vec_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:549:59
[INFO] [stdout]     |
[INFO] [stdout] 549 |         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 549 -         let exists_gene: &NoHashSet<GeneGroup> = unsafe { transmute(exists_gene_ptr) };
[INFO] [stdout] 549 +         let exists_gene: &NoHashSet<GeneGroup> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<GeneGroup, (), BuildHasherDefault<NoHashHasher<GeneGroup>>>>(exists_gene_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:550:78
[INFO] [stdout]     |
[INFO] [stdout] 550 |         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout]     |                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 550 -         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { transmute(already_compose_collection_ptr) };
[INFO] [stdout] 550 +         let already_compose_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(already_compose_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:551:71
[INFO] [stdout]     |
[INFO] [stdout] 551 |         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout]     |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 551 -         let selected_collection: &NoHashSet<ComposeResult> = unsafe { transmute(selected_collection_ptr) };
[INFO] [stdout] 551 +         let selected_collection: &NoHashSet<ComposeResult> = unsafe { &*std::ptr::with_exposed_provenance::<HashMap<ComposeResult, (), BuildHasherDefault<NoHashHasher<ComposeResult>>>>(selected_collection_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:552:49
[INFO] [stdout]     |
[INFO] [stdout] 552 |         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 552 -         let probability: &BigDecimal = unsafe { transmute(probability_ptr) };
[INFO] [stdout] 552 +         let probability: &BigDecimal = unsafe { &*std::ptr::with_exposed_provenance::<BigDecimal>(probability_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:591:52
[INFO] [stdout]     |
[INFO] [stdout] 591 |         let a2: &mut Vec<ComposeResult> = unsafe { transmute(a2_ptr) };
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 591 -         let a2: &mut Vec<ComposeResult> = unsafe { transmute(a2_ptr) };
[INFO] [stdout] 591 +         let a2: &mut Vec<ComposeResult> = unsafe { &mut *std::ptr::with_exposed_provenance_mut::<Vec<ComposeResult>>(a2_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]    --> src/main.rs:597:52
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let a3: &mut Vec<ComposeResult> = unsafe { transmute(a3_ptr) };
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]     = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]     = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]     = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]     = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]     |
[INFO] [stdout] 597 -         let a3: &mut Vec<ComposeResult> = unsafe { transmute(a3_ptr) };
[INFO] [stdout] 597 +         let a3: &mut Vec<ComposeResult> = unsafe { &mut *std::ptr::with_exposed_provenance_mut::<Vec<ComposeResult>>(a3_ptr) };
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:626:17
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 626 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:656:24
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 656 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:735:17
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                 ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 735 |     if unsafe { &raw const LOSS_MODE } == &LossMode::ACCURACY {
[INFO] [stdout]     |                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/main.rs:763:24
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                        ^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 763 |     } else if unsafe { &raw const LOSS_MODE } == &LossMode::AMOUNT {
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/main.rs:1365:5
[INFO] [stdout]      |
[INFO] [stdout] 1365 |     stdout().flush();
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1365 |     let _ = stdout().flush();
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/main.rs:1415:9
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         stdout().flush();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1415 |         let _ = stdout().flush();
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `poke` (bin "poke" test) due to 4 previous errors; 38 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b", kill_on_drop: false }`
[INFO] [stdout] 0796f7e45e0944566a00df6e69a83b508a3625f299f0e7113a50d395d604c16b
